home *** CD-ROM | disk | FTP | other *** search
- ;Corwar-program 'TANK' , slitting/doubling 0-Werfer
- ;(c) 4/89 Detlef BUNK, Norderneyweg 5, D-43 Essen
- ; ergaenzte Version
- jmp start ; only for start, ommited in further copies
- ptr: DAT 27 ;program length -1,care if change program!
- start: MOV #0 @bomb ;shoot backwd 0-bomb
- MOV #0 @bombv ;shoot forwd 0-bomb
- SUB #9 bombv ;decrement forwd-bomb, defines forwd bombarea
- ADD #9 bomb ;increment backwd-bomb, defines backwd bombarea
- DJN start count ;decrement bombcounter
- JMP newc
- newc: JMZ asave 384 ;check adr. before new copyfield:enemy prgr instruct?
- ADD #256 new ;if yes, i.e. non-zero, increment adr. for new copy
- asave: JMZ save @new ;test 1. adr. of copyfield if yes, increment copyadr
- ADD #783 new ;
- save: MOV #41 count ;restore bmb-counter
- MOV #-47 bombv ;restore 1st bmb-adr
- MOV #32 bomb ;restore 1st bckwd-bmb-adr
- copy: MOV @ptr @new ;start copyloop
- SUB #1 new ;decrement copy-adress counter
- DJN copy ptr
- JMP ready
- ready: MOV #27 ptr ;restore copypointer
- MOV ptr @new ;copy copypointer to new program
- ADD #2 new ;increment for jmp to 'start'label of new copy
- SPL @new ;invoke new progr.
- ADD #2800 new ;adr. for next copy to get out of own bomb-area
- JMP start ;once again
- new: DAT 544 ;adr for new copy out of own bomb-area
- count: DAT 41 ;num of bombs
- bomb: DAT 32 ;adr. of 1. backwd-bomb
- bombv: DAT -47 ;adr. of 1. forwd-bomb,not lower than progr.-length!
- ;Program firstly throws 'count' 0-bombs foreward and backward.
- ;Then it looks for a safe place for a new copy, checking copyarea for other
- ;enemy- or own program instruction to find a field which is
- ;filled with 0-data. First check is made far enough ahead of the eventual
- ;copyarea to detect 'mov 0 1'-aggressors, which can disturb the copyprocess.
- ;Distance must fit that the last backward-bomb of the old program
- ;and the last foreward-bomb of the new program cannot destroy each other.
- ;The second check looks for the same but checks exactly for 0 the adress of
- ;the first potentially copied instruction. If either check is negativ
- ;new copyarea is computed by decrementing copyadress.
- ;Then copy starts by risk of destroying own old programs or by chance
- ;writing over enemy programs.
- ; The bombed area depends on number and distance of thrown bombs.
- ;It should not overlap, so that there's no risk to destroy each other
- ;in the beginning of the battle during the first cycles. In the further course
- ;of the battle it is inevitable. But this has the advantage that not too many
- ;copys are alive. A medium amount of copys can throw more bombs as if every
- ;new program is occupied by copying itself.
-